package com.witmore.neutron.ai.mcp.server.trading.service;

import com.witmore.neutron.ai.mcp.server.trading.dto.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Random;

/**
 * 股票AI财务分析服务
 * 专注于基于财务报表数据的专业分析
 * 
 * @author 豆子高
 * @date 2025-01-20
 */
@Slf4j
@Service
public class StockAIAnalysisService {

    /**
     * 生成股票财务分析报告
     * 
     * @param report 包含财务数据的报告对象
     * @return 完整的财务分析报告
     */
    public StockAnalysisReportDTO generateFinancialAnalysisReport(StockAnalysisReportDTO report) {
        log.info("开始生成股票财务分析报告: {} - {}", report.getStockCode(), report.getStockName());

        try {
            StockFinancialDataDTO financialData = report.getFinancialData();
            
            if (financialData == null) {
                log.warn("财务数据为空，无法进行分析: {}", report.getStockCode());
                return report;
            }

            // 财务报表分析
            report.setFinancialAnalysis(generateComprehensiveFinancialAnalysis(financialData));

            // 盈利能力分析
            report.setProfitabilityAnalysis(generateProfitabilityAnalysis(financialData));

            // 偿债能力分析
            report.setSolvencyAnalysis(generateSolvencyAnalysis(financialData));

            // 营运能力分析
            report.setOperationalAnalysis(generateOperationalAnalysis(financialData));

            // 成长能力分析
            report.setGrowthAnalysis(generateGrowthAnalysis(financialData));

            // 现金流分析
            report.setCashFlowAnalysis(generateCashFlowAnalysis(financialData));

            // 研报分析（仅作为参考）
            if (!CollectionUtils.isEmpty(report.getResearchReports())) {
                report.setResearchAnalysis(generateResearchAnalysis(report.getResearchReports()));
            }

            // 财务风险评级
            Integer riskLevel = calculateFinancialRiskLevel(financialData);
            report.setRiskLevel(riskLevel);
            report.setRiskDescription(getFinancialRiskDescription(riskLevel));

            // 投资建议
            String recommendation = generateInvestmentRecommendation(financialData, report.getResearchReports());
            report.setInvestmentRecommendation(recommendation);
            report.setRecommendationReason(generateRecommendationReason(financialData, recommendation));

            // 综合评分
            report.setOverallScore(calculateFinancialScore(financialData));

            // AI综合总结
            report.setAiSummary(generateFinancialAISummary(report));

            log.info("股票财务分析报告生成完成: {} - 风险等级: {}, 投资建议: {}, 综合评分: {}", 
                    report.getStockCode(), report.getRiskLevel(), 
                    report.getInvestmentRecommendation(), report.getOverallScore());

        } catch (Exception e) {
            log.error("生成财务分析报告时发生错误: {}", e.getMessage(), e);
        }

        return report;
    }

    // ==================== 专业财务分析方法 ====================

    /**
     * 生成综合财务分析
     */
    private String generateComprehensiveFinancialAnalysis(StockFinancialDataDTO financialData) {
        StringBuilder analysis = new StringBuilder();
        analysis.append("## 财务报表综合分析\n\n");
        
        // 基本财务概况
        analysis.append("### 财务概况\n");
        analysis.append("**报告期：** ").append(financialData.getReportPeriod() != null ? financialData.getReportPeriod() : "未知").append("\n");
        analysis.append("**数据来源：** ").append(financialData.getDataSource() != null ? financialData.getDataSource() : "多数据源整合").append("\n\n");
        
        // 规模指标
        if (financialData.getTotalAssets() != null || financialData.getOperatingRevenue() != null) {
            analysis.append("### 企业规模\n");
            if (financialData.getTotalAssets() != null) {
                analysis.append("**总资产：** ").append(formatAmount(financialData.getTotalAssets())).append("\n");
            }
            if (financialData.getOperatingRevenue() != null) {
                analysis.append("**营业收入：** ").append(formatAmount(financialData.getOperatingRevenue())).append("\n");
            }
            analysis.append("\n");
        }
        
        return analysis.toString();
    }

    /**
     * 生成盈利能力分析
     */
    private String generateProfitabilityAnalysis(StockFinancialDataDTO financialData) {
        StringBuilder analysis = new StringBuilder();
        analysis.append("## 盈利能力分析\n\n");

        // 盈利规模分析
        if (financialData.getNetProfit() != null) {
            analysis.append("### 盈利规模\n");
            analysis.append("**净利润：** ").append(formatAmount(financialData.getNetProfit()));
            if (financialData.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
                analysis.append("，公司实现盈利");
            } else {
                analysis.append("，公司出现亏损");
            }
            analysis.append("\n\n");
        }

        // 盈利质量分析
        analysis.append("### 盈利质量指标\n");
        
        // 净利润率
        if (financialData.getNetProfitMargin() != null) {
            BigDecimal netMargin = financialData.getNetProfitMargin();
            analysis.append("**净利润率：** ").append(netMargin.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (netMargin.compareTo(new BigDecimal("15")) > 0) {
                analysis.append("，盈利质量优秀");
            } else if (netMargin.compareTo(new BigDecimal("8")) > 0) {
                analysis.append("，盈利质量良好");
            } else if (netMargin.compareTo(new BigDecimal("3")) > 0) {
                analysis.append("，盈利质量一般");
            } else {
                analysis.append("，盈利质量偏低");
            }
            analysis.append("\n");
        }

        // 毛利率
        if (financialData.getGrossProfitMargin() != null) {
            BigDecimal grossMargin = financialData.getGrossProfitMargin();
            analysis.append("**毛利率：** ").append(grossMargin.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (grossMargin.compareTo(new BigDecimal("40")) > 0) {
                analysis.append("，产品竞争优势明显");
            } else if (grossMargin.compareTo(new BigDecimal("20")) > 0) {
                analysis.append("，盈利空间适中");
            } else {
                analysis.append("，成本控制压力较大");
            }
            analysis.append("\n");
        }

        // ROE分析
        if (financialData.getReturnOnEquity() != null) {
            BigDecimal roe = financialData.getReturnOnEquity();
            analysis.append("**净资产收益率(ROE)：** ").append(roe.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (roe.compareTo(new BigDecimal("20")) > 0) {
                analysis.append("，股东回报优秀");
            } else if (roe.compareTo(new BigDecimal("15")) > 0) {
                analysis.append("，股东回报良好");
            } else if (roe.compareTo(new BigDecimal("8")) > 0) {
                analysis.append("，股东回报一般");
            } else {
                analysis.append("，股东回报偏低");
            }
            analysis.append("\n");
        }

        // ROA分析
        if (financialData.getReturnOnAssets() != null) {
            BigDecimal roa = financialData.getReturnOnAssets();
            analysis.append("**总资产收益率(ROA)：** ").append(roa.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (roa.compareTo(new BigDecimal("8")) > 0) {
                analysis.append("，资产运用效率高");
            } else if (roa.compareTo(new BigDecimal("4")) > 0) {
                analysis.append("，资产运用效率适中");
            } else {
                analysis.append("，资产运用效率有待提升");
            }
            analysis.append("\n");
        }

        analysis.append("\n");
        return analysis.toString();
    }

    /**
     * 生成偿债能力分析
     */
    private String generateSolvencyAnalysis(StockFinancialDataDTO financialData) {
        StringBuilder analysis = new StringBuilder();
        analysis.append("## 偿债能力分析\n\n");

        // 长期偿债能力
        analysis.append("### 长期偿债能力\n");
        if (financialData.getDebtToAssetRatio() != null) {
            BigDecimal debtRatio = financialData.getDebtToAssetRatio();
            analysis.append("**资产负债率：** ").append(debtRatio.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (debtRatio.compareTo(new BigDecimal("70")) > 0) {
                analysis.append("，财务杠杆过高，存在较大财务风险");
            } else if (debtRatio.compareTo(new BigDecimal("50")) > 0) {
                analysis.append("，财务杠杆适中，风险可控");
            } else if (debtRatio.compareTo(new BigDecimal("30")) > 0) {
                analysis.append("，财务结构稳健");
            } else {
                analysis.append("，财务结构非常保守");
            }
            analysis.append("\n");
        }

        // 短期偿债能力
        analysis.append("\n### 短期偿债能力\n");
        if (financialData.getCurrentRatio() != null) {
            BigDecimal currentRatio = financialData.getCurrentRatio();
            analysis.append("**流动比率：** ").append(currentRatio.setScale(2, RoundingMode.HALF_UP));
            if (currentRatio.compareTo(new BigDecimal("2")) > 0) {
                analysis.append("，短期偿债能力强");
            } else if (currentRatio.compareTo(new BigDecimal("1.5")) > 0) {
                analysis.append("，短期偿债能力良好");
            } else if (currentRatio.compareTo(new BigDecimal("1")) > 0) {
                analysis.append("，短期偿债能力一般");
            } else {
                analysis.append("，短期偿债能力存在风险");
            }
            analysis.append("\n");
        }

        if (financialData.getQuickRatio() != null) {
            BigDecimal quickRatio = financialData.getQuickRatio();
            analysis.append("**速动比率：** ").append(quickRatio.setScale(2, RoundingMode.HALF_UP));
            if (quickRatio.compareTo(new BigDecimal("1")) > 0) {
                analysis.append("，变现能力强");
            } else {
                analysis.append("，变现能力有限");
            }
            analysis.append("\n");
        }

        analysis.append("\n");
        return analysis.toString();
    }

    /**
     * 生成营运能力分析
     */
    private String generateOperationalAnalysis(StockFinancialDataDTO financialData) {
        StringBuilder analysis = new StringBuilder();
        analysis.append("## 营运能力分析\n\n");

        analysis.append("### 资产周转能力\n");
        
        // 总资产周转率（估算）
        if (financialData.getOperatingRevenue() != null && financialData.getTotalAssets() != null 
            && financialData.getTotalAssets().compareTo(BigDecimal.ZERO) != 0) {
            BigDecimal assetTurnover = financialData.getOperatingRevenue()
                    .divide(financialData.getTotalAssets(), 4, RoundingMode.HALF_UP);
            analysis.append("**总资产周转率：** ").append(assetTurnover.setScale(2, RoundingMode.HALF_UP));
            if (assetTurnover.compareTo(new BigDecimal("1")) > 0) {
                analysis.append("，资产运营效率良好");
            } else if (assetTurnover.compareTo(new BigDecimal("0.5")) > 0) {
                analysis.append("，资产运营效率一般");
            } else {
                analysis.append("，资产运营效率偏低");
            }
            analysis.append("\n");
        }

        analysis.append("\n### 营运能力评估\n");
        if (financialData.getOperatingRevenue() != null && financialData.getTotalAssets() != null) {
            analysis.append("基于营业收入与总资产的关系，公司资产利用效率");
            BigDecimal efficiency = financialData.getOperatingRevenue()
                    .divide(financialData.getTotalAssets(), 4, RoundingMode.HALF_UP);
            if (efficiency.compareTo(new BigDecimal("0.8")) > 0) {
                analysis.append("较高，资产配置合理。");
            } else if (efficiency.compareTo(new BigDecimal("0.4")) > 0) {
                analysis.append("中等，有一定提升空间。");
            } else {
                analysis.append("偏低，需要关注资产运营效率。");
            }
            analysis.append("\n");
        }

        analysis.append("\n");
        return analysis.toString();
    }

    /**
     * 生成成长能力分析
     */
    private String generateGrowthAnalysis(StockFinancialDataDTO financialData) {
        StringBuilder analysis = new StringBuilder();
        analysis.append("## 成长能力分析\n\n");

        boolean hasGrowthData = false;

        // 营业收入增长率
        if (financialData.getRevenueGrowthRate() != null) {
            hasGrowthData = true;
            BigDecimal revenueGrowth = financialData.getRevenueGrowthRate();
            analysis.append("**营业收入同比增长率：** ").append(revenueGrowth.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (revenueGrowth.compareTo(new BigDecimal("20")) > 0) {
                analysis.append("，收入增长强劲");
            } else if (revenueGrowth.compareTo(new BigDecimal("10")) > 0) {
                analysis.append("，收入增长良好");
            } else if (revenueGrowth.compareTo(BigDecimal.ZERO) > 0) {
                analysis.append("，收入保持增长");
            } else {
                analysis.append("，收入出现下滑");
            }
            analysis.append("\n");
        }

        // 净利润增长率
        if (financialData.getNetProfitGrowthRate() != null) {
            hasGrowthData = true;
            BigDecimal profitGrowth = financialData.getNetProfitGrowthRate();
            analysis.append("**净利润同比增长率：** ").append(profitGrowth.setScale(2, RoundingMode.HALF_UP)).append("%");
            if (profitGrowth.compareTo(new BigDecimal("30")) > 0) {
                analysis.append("，利润增长非常强劲");
            } else if (profitGrowth.compareTo(new BigDecimal("15")) > 0) {
                analysis.append("，利润增长良好");
            } else if (profitGrowth.compareTo(BigDecimal.ZERO) > 0) {
                analysis.append("，利润保持增长");
            } else {
                analysis.append("，利润出现下滑");
            }
            analysis.append("\n");
        }

        if (!hasGrowthData) {
            analysis.append("**增长数据说明：** 当前报告期缺少同比增长数据，无法进行成长性分析。建议获取多期财务数据进行对比。\n");
        }

        analysis.append("\n");
        return analysis.toString();
    }

    /**
     * 生成现金流分析
     */
    private String generateCashFlowAnalysis(StockFinancialDataDTO financialData) {
        StringBuilder analysis = new StringBuilder();
        analysis.append("## 现金流分析\n\n");

        // 经营现金流分析
        if (financialData.getOperatingCashFlow() != null) {
            analysis.append("### 经营活动现金流\n");
            analysis.append("**经营活动现金流净额：** ").append(formatAmount(financialData.getOperatingCashFlow()));
            if (financialData.getOperatingCashFlow().compareTo(BigDecimal.ZERO) > 0) {
                analysis.append("，经营活动产生正现金流");
                
                // 与净利润对比
                if (financialData.getNetProfit() != null && financialData.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
                    BigDecimal cashToProfit = financialData.getOperatingCashFlow()
                            .divide(financialData.getNetProfit(), 4, RoundingMode.HALF_UP);
                    if (cashToProfit.compareTo(new BigDecimal("1.2")) > 0) {
                        analysis.append("，现金流质量优秀");
                    } else if (cashToProfit.compareTo(new BigDecimal("0.8")) > 0) {
                        analysis.append("，现金流质量良好");
                    } else {
                        analysis.append("，现金流质量一般");
                    }
                }
            } else {
                analysis.append("，经营活动现金流为负，需关注经营状况");
            }
            analysis.append("\n\n");
        }

        // 投资和筹资现金流
        analysis.append("### 投资与筹资现金流\n");
        if (financialData.getInvestingCashFlow() != null) {
            analysis.append("**投资活动现金流：** ").append(formatAmount(financialData.getInvestingCashFlow()));
            if (financialData.getInvestingCashFlow().compareTo(BigDecimal.ZERO) < 0) {
                analysis.append("，公司在扩大投资");
            } else {
                analysis.append("，公司在收回投资");
            }
            analysis.append("\n");
        }

        if (financialData.getFinancingCashFlow() != null) {
            analysis.append("**筹资活动现金流：** ").append(formatAmount(financialData.getFinancingCashFlow()));
            if (financialData.getFinancingCashFlow().compareTo(BigDecimal.ZERO) > 0) {
                analysis.append("，公司在筹集资金");
            } else {
                analysis.append("，公司在偿还债务或分红");
            }
            analysis.append("\n");
        }

        analysis.append("\n");
        return analysis.toString();
    }

    /**
     * 生成研报分析（仅作为辅助参考）
     */
    private String generateResearchAnalysis(List<StockResearchReportDTO> researchList) {
        if (CollectionUtils.isEmpty(researchList)) {
            return "## 研报参考\n\n近期暂无相关研究报告。\n\n";
        }

        StringBuilder analysis = new StringBuilder();
        analysis.append("## 研报参考\n\n");
        analysis.append("**说明：** 研报仅作为辅助参考，主要分析仍基于财务报表数据。\n\n");
        analysis.append("**研报数量：** ").append(researchList.size()).append("份\n\n");

        // 统计评级分布
        int buyCount = 0;
        int holdCount = 0;
        int sellCount = 0;

        for (StockResearchReportDTO report : researchList) {
            if (report.getRating() != null) {
                String rating = report.getRating().toLowerCase();
                if (rating.contains("买入") || rating.contains("推荐") || rating.contains("增持")) {
                    buyCount++;
                } else if (rating.contains("持有") || rating.contains("中性")) {
                    holdCount++;
                } else if (rating.contains("卖出") || rating.contains("减持")) {
                    sellCount++;
                }
            }
        }

        if (buyCount > 0 || holdCount > 0 || sellCount > 0) {
            analysis.append("**机构评级分布：** ");
            if (buyCount > 0) analysis.append("买入/推荐 ").append(buyCount).append("份，");
            if (holdCount > 0) analysis.append("持有/中性 ").append(holdCount).append("份，");
            if (sellCount > 0) analysis.append("卖出/减持 ").append(sellCount).append("份");
            analysis.append("\n\n");
        }

        analysis.append("**投资建议：** 建议投资者主要参考财务报表分析结果，研报仅作为市场情绪的参考指标。\n\n");
        return analysis.toString();
    }

    // ==================== 财务风险评级和投资建议 ====================

    /**
     * 计算基于财务数据的风险等级
     */
    private Integer calculateFinancialRiskLevel(StockFinancialDataDTO financialData) {
        int riskScore = 3; // 默认中等风险

        // 盈利能力影响
        if (financialData.getNetProfit() != null) {
            if (financialData.getNetProfit().compareTo(BigDecimal.ZERO) < 0) {
                riskScore += 1; // 亏损增加风险
            }
        }

        // 资产负债率影响
        if (financialData.getDebtToAssetRatio() != null) {
            BigDecimal debtRatio = financialData.getDebtToAssetRatio();
            if (debtRatio.compareTo(new BigDecimal("70")) > 0) {
                riskScore += 1; // 高负债增加风险
            } else if (debtRatio.compareTo(new BigDecimal("30")) < 0) {
                riskScore -= 1; // 低负债降低风险
            }
        }

        // 流动比率影响
        if (financialData.getCurrentRatio() != null) {
            BigDecimal currentRatio = financialData.getCurrentRatio();
            if (currentRatio.compareTo(new BigDecimal("1")) < 0) {
                riskScore += 1; // 流动性不足增加风险
            } else if (currentRatio.compareTo(new BigDecimal("2")) > 0) {
                riskScore -= 1; // 流动性充足降低风险
            }
        }

        // 现金流影响
        if (financialData.getOperatingCashFlow() != null) {
            if (financialData.getOperatingCashFlow().compareTo(BigDecimal.ZERO) < 0) {
                riskScore += 1; // 负经营现金流增加风险
            }
        }

        // 限制范围在1-5之间
        return Math.max(1, Math.min(5, riskScore));
    }

    /**
     * 获取财务风险等级描述
     */
    private String getFinancialRiskDescription(Integer riskLevel) {
        switch (riskLevel) {
            case 1:
                return "财务风险很低，财务状况稳健，适合稳健型投资者";
            case 2:
                return "财务风险较低，财务指标良好，投资相对安全";
            case 3:
                return "财务风险中等，需要关注财务指标变化";
            case 4:
                return "财务风险较高，存在一定财务压力，需谨慎投资";
            case 5:
                return "财务风险很高，财务状况存在较大问题，投资需极度谨慎";
            default:
                return "财务风险等级未知";
        }
    }

    /**
     * 基于财务数据生成投资建议
     */
    private String generateInvestmentRecommendation(StockFinancialDataDTO financialData, List<StockResearchReportDTO> researchList) {
        int score = 0;

        // 基于财务数据评分
        if (financialData.getNetProfit() != null && financialData.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
            score += 2; // 盈利加分
        }

        if (financialData.getReturnOnEquity() != null && financialData.getReturnOnEquity().compareTo(new BigDecimal("15")) > 0) {
            score += 2; // 高ROE加分
        }

        if (financialData.getDebtToAssetRatio() != null && financialData.getDebtToAssetRatio().compareTo(new BigDecimal("50")) < 0) {
            score += 1; // 低负债率加分
        }

        if (financialData.getCurrentRatio() != null && financialData.getCurrentRatio().compareTo(new BigDecimal("1.5")) > 0) {
            score += 1; // 良好流动性加分
        }

        if (financialData.getOperatingCashFlow() != null && financialData.getOperatingCashFlow().compareTo(BigDecimal.ZERO) > 0) {
            score += 1; // 正经营现金流加分
        }

        // 成长性指标
        if (financialData.getRevenueGrowthRate() != null && financialData.getRevenueGrowthRate().compareTo(new BigDecimal("10")) > 0) {
            score += 1; // 收入增长加分
        }

        // 研报作为辅助参考（权重较低）
        if (!CollectionUtils.isEmpty(researchList)) {
            int buyCount = 0;
            for (StockResearchReportDTO report : researchList) {
                if (report.getRating() != null && 
                    (report.getRating().contains("买入") || report.getRating().contains("推荐"))) {
                    buyCount++;
                }
            }
            if (buyCount > researchList.size() / 2) {
                score += 1; // 机构看好加分
            }
        }

        // 生成建议
        if (score >= 6) {
            return "买入";
        } else if (score >= 4) {
            return "持有";
        } else if (score >= 2) {
            return "谨慎观望";
        } else {
            return "规避";
        }
    }

    /**
     * 生成基于财务数据的投资建议理由
     */
    private String generateRecommendationReason(StockFinancialDataDTO financialData, String recommendation) {
        StringBuilder reason = new StringBuilder();
        
        switch (recommendation) {
            case "买入":
                reason.append("基于财务报表分析，该股票具备以下优势：");
                if (financialData.getNetProfit() != null && financialData.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
                    reason.append("盈利状况良好；");
                }
                if (financialData.getReturnOnEquity() != null && financialData.getReturnOnEquity().compareTo(new BigDecimal("15")) > 0) {
                    reason.append("ROE较高；");
                }
                if (financialData.getDebtToAssetRatio() != null && financialData.getDebtToAssetRatio().compareTo(new BigDecimal("50")) < 0) {
                    reason.append("财务结构稳健；");
                }
                reason.append("整体财务质量较高，具备投资价值。");
                break;
                
            case "持有":
                reason.append("财务指标表现中等：");
                if (financialData.getNetProfit() != null && financialData.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
                    reason.append("公司盈利；");
                } else {
                    reason.append("盈利能力需关注；");
                }
                reason.append("建议继续观察财务指标变化趋势。");
                break;
                
            case "谨慎观望":
                reason.append("财务状况存在以下问题：");
                if (financialData.getNetProfit() != null && financialData.getNetProfit().compareTo(BigDecimal.ZERO) <= 0) {
                    reason.append("公司亏损；");
                }
                if (financialData.getDebtToAssetRatio() != null && financialData.getDebtToAssetRatio().compareTo(new BigDecimal("70")) > 0) {
                    reason.append("负债率较高；");
                }
                reason.append("建议等待财务改善后再考虑投资。");
                break;
                
            case "规避":
                reason.append("财务风险较大：");
                if (financialData.getNetProfit() != null && financialData.getNetProfit().compareTo(BigDecimal.ZERO) < 0) {
                    reason.append("持续亏损；");
                }
                if (financialData.getCurrentRatio() != null && financialData.getCurrentRatio().compareTo(new BigDecimal("1")) < 0) {
                    reason.append("流动性不足；");
                }
                reason.append("不建议投资。");
                break;
                
            default:
                reason.append("基于当前财务数据综合评估得出。");
                break;
        }
        
        return reason.toString();
    }

    /**
     * 计算基于财务数据的综合评分 (0-100分)
     */
    private Integer calculateFinancialScore(StockFinancialDataDTO financialData) {
        int baseScore = 50; // 基础分数

        // 盈利能力评分 (0-25分)
        if (financialData.getNetProfit() != null) {
            if (financialData.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
                baseScore += 15; // 盈利加分
                
                if (financialData.getNetProfitMargin() != null) {
                    BigDecimal margin = financialData.getNetProfitMargin();
                    if (margin.compareTo(new BigDecimal("15")) > 0) {
                        baseScore += 10; // 高净利润率
                    } else if (margin.compareTo(new BigDecimal("8")) > 0) {
                        baseScore += 5; // 中等净利润率
                    }
                }
            } else {
                baseScore -= 15; // 亏损扣分
            }
        }

        // 偿债能力评分 (0-20分)
        if (financialData.getDebtToAssetRatio() != null) {
            BigDecimal debtRatio = financialData.getDebtToAssetRatio();
            if (debtRatio.compareTo(new BigDecimal("30")) < 0) {
                baseScore += 15; // 低负债率
            } else if (debtRatio.compareTo(new BigDecimal("50")) < 0) {
                baseScore += 10; // 中等负债率
            } else if (debtRatio.compareTo(new BigDecimal("70")) < 0) {
                baseScore += 5; // 较高负债率
            } else {
                baseScore -= 10; // 过高负债率
            }
        }

        if (financialData.getCurrentRatio() != null) {
            BigDecimal currentRatio = financialData.getCurrentRatio();
            if (currentRatio.compareTo(new BigDecimal("2")) > 0) {
                baseScore += 5; // 优秀流动性
            } else if (currentRatio.compareTo(new BigDecimal("1.5")) > 0) {
                baseScore += 3; // 良好流动性
            } else if (currentRatio.compareTo(new BigDecimal("1")) < 0) {
                baseScore -= 10; // 流动性不足
            }
        }

        // 资产运用效率评分 (0-15分)
        if (financialData.getReturnOnAssets() != null) {
            BigDecimal roa = financialData.getReturnOnAssets();
            if (roa.compareTo(new BigDecimal("8")) > 0) {
                baseScore += 10;
            } else if (roa.compareTo(new BigDecimal("4")) > 0) {
                baseScore += 5;
            }
        }

        if (financialData.getReturnOnEquity() != null) {
            BigDecimal roe = financialData.getReturnOnEquity();
            if (roe.compareTo(new BigDecimal("20")) > 0) {
                baseScore += 5;
            } else if (roe.compareTo(new BigDecimal("15")) > 0) {
                baseScore += 3;
            }
        }

        // 现金流评分 (0-10分)
        if (financialData.getOperatingCashFlow() != null) {
            if (financialData.getOperatingCashFlow().compareTo(BigDecimal.ZERO) > 0) {
                baseScore += 10; // 正经营现金流
            } else {
                baseScore -= 5; // 负经营现金流
            }
        }

        // 确保分数在0-100范围内
        return Math.max(0, Math.min(100, baseScore));
    }

    /**
     * 生成基于财务分析的AI综合总结
     */
    private String generateFinancialAISummary(StockAnalysisReportDTO report) {
        StringBuilder summary = new StringBuilder();
        
        summary.append("## AI财务分析综合总结\n\n");
        summary.append("**股票代码：** ").append(report.getStockCode());
        if (report.getStockName() != null) {
            summary.append("（").append(report.getStockName()).append("）");
        }
        summary.append("\n\n");
        
        summary.append("**分析基础：** 基于三大财务报表进行专业分析\n");
        summary.append("**综合评分：** ").append(report.getOverallScore()).append("/100分\n");
        summary.append("**财务风险等级：** ").append(report.getRiskLevel()).append("级（").append(report.getRiskDescription()).append("）\n");
        summary.append("**投资建议：** ").append(report.getInvestmentRecommendation()).append("\n\n");
        
        summary.append("### 财务健康度总览\n");
        StockFinancialDataDTO financial = report.getFinancialData();
        if (financial != null) {
            // 盈利能力
            summary.append("**盈利能力：** ");
            if (financial.getNetProfit() != null && financial.getNetProfit().compareTo(BigDecimal.ZERO) > 0) {
                if (financial.getNetProfitMargin() != null && financial.getNetProfitMargin().compareTo(new BigDecimal("10")) > 0) {
                    summary.append("优秀");
                } else {
                    summary.append("良好");
                }
            } else {
                summary.append("需关注");
            }
            summary.append("\n");

            // 偿债能力
            summary.append("**偿债能力：** ");
            if (financial.getDebtToAssetRatio() != null) {
                BigDecimal debtRatio = financial.getDebtToAssetRatio();
                if (debtRatio.compareTo(new BigDecimal("50")) < 0) {
                    summary.append("稳健");
                } else if (debtRatio.compareTo(new BigDecimal("70")) < 0) {
                    summary.append("适中");
                } else {
                    summary.append("需关注");
                }
            } else {
                summary.append("数据不足");
            }
            summary.append("\n");

            // 现金流状况
            summary.append("**现金流状况：** ");
            if (financial.getOperatingCashFlow() != null) {
                if (financial.getOperatingCashFlow().compareTo(BigDecimal.ZERO) > 0) {
                    summary.append("健康");
                } else {
                    summary.append("需关注");
                }
            } else {
                summary.append("数据不足");
            }
            summary.append("\n\n");
        }
        
        summary.append("### 关键提示\n");
        summary.append("• **分析方法：** 采用多数据源财务报表综合分析\n");
        summary.append("• **数据来源：** ").append(financial != null ? financial.getDataSource() : "多数据源").append("\n");
        summary.append("• **分析重点：** 专注财务基本面，减少市场情绪干扰\n");
        if (!CollectionUtils.isEmpty(report.getResearchReports())) {
            summary.append("• **研报参考：** 已收集").append(report.getResearchReports().size()).append("份研报作为辅助参考\n");
        }
        summary.append("• **风险提醒：** 财务数据具有滞后性，投资需结合最新市场情况\n\n");
        
        summary.append("**免责声明：** 本分析基于公开财务数据，仅供参考，不构成投资建议。投资者应基于自身情况和风险承受能力做出独立判断。");
        
        return summary.toString();
    }

    // ==================== 工具方法 ====================

    /**
     * 格式化金额显示
     */
    private String formatAmount(BigDecimal amount) {
        if (amount == null) {
            return "未知";
        }
        
        BigDecimal billion = new BigDecimal("1000000000");
        BigDecimal million = new BigDecimal("1000000");
        BigDecimal thousand = new BigDecimal("1000");
        
        if (amount.abs().compareTo(billion) >= 0) {
            return amount.divide(billion, 2, RoundingMode.HALF_UP) + "亿元";
        } else if (amount.abs().compareTo(million) >= 0) {
            return amount.divide(million, 2, RoundingMode.HALF_UP) + "万元";
        } else if (amount.abs().compareTo(thousand) >= 0) {
            return amount.divide(thousand, 2, RoundingMode.HALF_UP) + "千元";
        } else {
            return amount.setScale(2, RoundingMode.HALF_UP) + "元";
        }
    }
}
